iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0
Mobile Development

swift 30天之旅系列 第 17

第十七天:控件和視圖 - UITableView和UITableViewCell

  • 分享至 

  • xImage
  •  

在iOS開發中,UITableView是最常用和最有彈性的UI控件之一。它被用來展示有序列表的數據,例如通訊錄、設置選項、新聞文章等。UITableViewCell則是表格視圖中每一行的呈現方式。今天,我們將深入探討如何使用和自定義這兩個重要的控件。

UITableView基礎

UITableView有兩種主要的風格:plaingrouped。大多數時候,我們使用plain風格。

創建UITableView

首先,在你的xibstoryboard中拖入一個UITableView。然後,與Swift程式碼進行連接:

@IBOutlet weak var tableView: UITableView!

要使UITableView工作,你需要設置其代理和數據源:

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.delegate = self
    tableView.dataSource = self
}

接下來,你需要擴展你的ViewController來實現UITableViewDataSourceUITableViewDelegate

extension ViewController: UITableViewDataSource, UITableViewDelegate {
    // 實現協議的方法
}

UITableViewDataSource

這個協議主要關注數據的呈現。最基本的方法包括:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return dataArray.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cellIdentifier", for: indexPath)
    cell.textLabel?.text = dataArray[indexPath.row]
    return cell
}

這裡,dataArray是你想要在表格中顯示的數據。

UITableViewCell

你可以使用系統提供的默認風格,也可以自定義。為了自定義,首先創建一個新的Swift文件,命名為CustomTableViewCell.swift,並繼承UITableViewCell

class CustomTableViewCell: UITableViewCell {
    // 定義你的自定義屬性和方法
}

xibstoryboard中,選擇你的表格視圖,然後加入一個自定義的cell。設置其類別為CustomTableViewCell,並設置重用標識符,例如"customCellIdentifier"。

在代碼中,你可以這樣使用自定義的cell:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "customCellIdentifier", for: indexPath) as! CustomTableViewCell
    // 配置你的自定義cell
    return cell
}

UITableViewDelegate

這個協議與用戶互動相關。例如,當用戶點擊一個cell時,你想做些什麼?

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    print("User selected row at \(indexPath.row)")
}

結論

UITableViewUITableViewCell是iOS開發中非常強大和靈活的工具,允許我們呈現大量的有序數據。通過自定義和擴展,我們可以創建出各種豐富多彩的界面和用戶體驗。


上一篇
第十六天:控件和視圖 - UIButton, UILabel, UITextField
下一篇
第十八天:控件和視圖 - UICollectionView
系列文
swift 30天之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言